// "Copyright [2021] <Copyright Shengkai Lin>"

#ifndef CLUSTER_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_H_
#define CLUSTER_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_H_

#include "cluster/basic/ai_sim.h"
#include "cluster/basic/topology.h"
#include "cluster/network_controller/topo_manager/topo_manager.h"
#include "cluster/resource_scheduler/resource_scheduler_algo/gpu_schedule_algo.h"
namespace ai_sim {

class ResourceScheduler : public omnetpp::cSimpleModule {
 private:
    // The workers_topo is used to manage the sensitive resources
    // for example gpus.
    Topology workers_topo;
    int total_workers;
    GpuScheduleAlgo algotype;
    TopoManager *topos;

 public:
    void initialize() override;
    void alloc_gpu_resource(taskboard&);
};
}  // namespace ai_sim

#endif  // CLUSTER_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_H_
